package cn.wp.ewallet.wallet.dao;

import cn.wp.ewallet.wallet.model.dto.AccountInfoDto;
import cn.wp.ewallet.wallet.model.entity.AccountInfoDo;
import cn.wp.ewallet.wallet.model.entity.AccountInfoDoo;

import java.math.BigDecimal;
import java.util.List;

/**
 * @ClassName AccountInfoDao
 * @Author ruixule
 * @Description TODO
 * @Date 2020/1/7 10:53
 */
public interface AccountInfoDao {
    /**
     * 通过钱包地址和  币种id 查询账户信息
     * @param walletAddress
     * @param moneyTypeId
     * @return
     */

    AccountInfoDoo selectAccountByWalletAddMoneyTypeId(String walletAddress, String moneyTypeId,String accountType);

    /**
     * 更新账户 金额
     * @return
     */
    public int updateAccountInfo(AccountInfoDoo accountInfoDoo );


    /**
     * 保存账户信息
     * @param accountInfoDo
     */
    void insertAccountInfo(AccountInfoDo accountInfoDo);

    /**
     * 查询理财总额
     * @param address
     * @param moneyTypeId
     * @return
     */
    BigDecimal selectFinaMoneyAmount(String address, String moneyTypeId);

    /**
     * 通过该账户id 查询该账户的余额信息
     * @param accountId
     * @return
     */
    AccountInfoDo selectAccountInfoByAccountId(String accountId);




    AccountInfoDo selectAccountByWalletAddAccountType(String walletAddress,String accountType);

    /**
     * 保存账户信息
     * @param accountInfoDo
     */
    void update(AccountInfoDo accountInfoDo);

    /**
     * 根据账户id更新账户资产
     * @param accountInfoDo
     */
    void updateAccountInfoById(AccountInfoDo accountInfoDo);

    /**
     * 根据账户id更新账户金额
     * @param amount
     * @param accountId
     * @param moneyTypeId
     * @return
     */
    int updateAccount(BigDecimal amount, String accountId, String moneyTypeId);

    void updateAccountInfoDo(AccountInfoDo accountInfoDo);

    AccountInfoDo selectAccountInfoByAccountId(String accountId,String moneyTypeId);

    /**
     * 根据账户id获取钱包地址
     * @param accountId
     * @return
     */
    String selectAddressByAccountId(String accountId);

    /**
     * 根据账户id增加账户收益
     * @param accountId
     * @param dailyEarn
     */
    void increaseMoneyAmount(String accountId, BigDecimal dailyEarn);

    /*
    通过账户id查询 accountInfoDoo 中的 单位
     */
    AccountInfoDoo selectAccountInfoDooByAccountId(String accountId);


}
